package com.ssyt.yt1.day30.echo.demo2;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 
 <pre>
 * 服务端
 * Echo程序，是网络编程的一个经典案例，称为回应程序，即：客户端输入哪
 * 些内容，服务端会在这些内容前加上“Echo:“并将信息返回客户端。
 * 其它要求：
 * a）客户端可以多次输入		         
 * b）如果客户端输入exit则客户端退出。
 * </pre>
 */
public class EchoServer {

	public static void main(String[] args) throws IOException {
		// 1）建立Socket连接
		ServerSocket serverSocket = new ServerSocket(8989);
		System.out.println("等待客户端连接...");
		Socket socket = serverSocket.accept();
		// 2）获得输入输出流、3）读写数据
		OutputStream outputStream = null;
		InputStream inputStream = null;
		while (true) {
			inputStream = socket.getInputStream();
			// 优点：不会受\n的影响； 缺点：byte数组要设置合理，有长度限制
			byte[] bytes = new byte[1024];
			int length = inputStream.read(bytes);
			String result = new String(bytes, 0, length);
			if ("exit".equals(result)) {
				break;
			}

			outputStream = socket.getOutputStream();
			outputStream.write(("Echo:" + result).getBytes());
		}
		// 4）关闭输入输出流
		outputStream.close();
		inputStream.close();
		// 5）关闭Socket
		socket.close();
		serverSocket.close();
	}
}
